package com.skyline.base.service;

import java.util.List;

import com.skyline.base.model.Notification;
import com.skyline.base.type.NotificationType;

/**
 * Notice的Service层
 * 
 * @author jairus
 * 
 * @version 0.1
 */
public interface NoticeService {

	/**
	 * getNotificationByOwnerId，通过用户自己的ID来查询自己的通知
	 * 
	 * @param ownerId
	 *            用户的ID
	 * @return 这位用户所收到的通知
	 */
	public List<Notification> getNotificationByOwnerId(Long ownerId);

	/**
	 * getNotificationById，通过通知的ID来获取这条通知
	 * 
	 * @param id
	 *            通知的ID
	 * @return ID为{id}的通知
	 */
	public Notification getNotificationById(Long id);

	/**
	 * deleteNotificationById,根据id来删除通知
	 * 
	 * @param id
	 *            所需删除的通知的ID
	 */
	// public void deleteNotificationById(Long id);

	/**
	 * deleteNotificationByResource，通过资源信息来删除通知
	 * 
	 * @param resourceId
	 *            所需删除的资源的ID
	 * @param type
	 *            所需删除的资源的类型
	 */
	// public void deleteNotificationByResource(Long resourceId,
	// NotificationType type);

	/**
	 * notifier 向ower 发送通知 可用于收到邀请时，邀请人向受邀请人 发出通知
	 * 
	 * @param ownerId
	 *            接通知的人
	 * @param notifierId
	 *            发送通知的人
	 * @param notifierNickname
	 * 			     发送通知的人的昵称
	 * @param resourceId
	 *            在哪里产生的通知（比如对idol状态进行评论时，会以该message的ID作为resourceId进行通知）
	 * @param resourceTitle
	 *            标题
	 * @param type
	 *            类型
	 * 
	 * @author Colonel
	 */
	public void addNotication(Long ownerId, Long notifierId,
			String notifierNickname, String resourceId, String resourceTitle,
			NotificationType type);

}
